#ifndef GRADUADE_H_
#define GRADUADE_H_

#include <iostream>
#include <string>

enum class Human{
    MAN=0,
    FEMAL=1
};

class Person{
    public:
    Person();
    Person(std::string name, Human sex, int age);
    ~Person(){};

    public:
    void SetName(const std::string &name);
    void SetAge(int age);
    void SetSex(Human sex);

    std::string ShowName() const;
    Human ShowSex() const;
    int ShowAge() const;
    void Show() const;

    protected:
    std::string name_;
    Human sex_;
    int age_;
};

class DateTime
{
    public:
    DateTime();
    DateTime(int year, int month, int day);

    public:
    void SetYear(int year);
    void SetMonth(int month);
    void SetDay(int day);

    int ShowYear() const;
    int ShowMonth() const;
    int ShowDay() const;
    void Show() const;

    private:
    int year_;
    int month_;
    int day_;
};

class Graduade : public Person
{
    public:
    Graduade();
    Graduade(const std::string &name, Human sex, int age, int id, std::string major);

    public:
    void SetId(int id);
    void SetMajor(std::string major);
    void SetAdmi(int year, int month, int day);

    int ShowId() const;
    std::string ShowMajor() const;
    void Show() const;

    private:
    int id_;
    std::string major_;
    DateTime admi_;
};

#endif